Systems and methods for providing relevant software documentation to users

ABSTRACT

The disclosed computer-implemented method may include (1) determining that a user is viewing a user interface of an application, (2) detecting that the user has requested assistance with interacting with a specific portion of content displayed within the user interface, and then (3) assisting the user with interacting with the specific portion of content by (A) identifying, within a repository of software documentation that describes features of the application, information relevant to utilizing the specific portion of content and (B) dynamically integrating the relevant information into the user interface. Various other methods, systems, and computer-readable media are also disclosed.

BACKGROUND

Software developers often compile and distribute software documentationthat explains the functionality of various features of their softwareapplications. In one example, software documentation may include and/orrepresent a technical manual containing information that enables usersto navigate and/or operate an application. Traditionally, softwaredocumentation may be stored in a file, document, and/or website that isseparate from the application itself. For example, documentation for anapplication may be compiled within a .PDF document or a similar type offile. When a user is unsure of how to properly utilize a particularfeature of the application, the user may access the file and then searchfor information that is relevant to the particular feature.

Unfortunately, extracting useful information from traditional softwaredocumentation systems may be complicated, tedious, and/or ineffective.For example, a user may end up sifting through dozens of irrelevantdocumentation pages before finding information that is pertinent to aspecific question or feature. Moreover, users may be deterred fromaccessing documentation for an application if the documentation is notreadily available (e.g., if the documentation must be accessed or openedin a different window than the window that displays the application).Accordingly, while software documentation may contain valuableinformation about features of an application, users may be unable and/orunwilling to efficiently access and/or utilize this information.

The instant disclosure, therefore, identifies and addresses a need forsystems and methods for providing relevant software documentation tousers.

SUMMARY

As will be described in greater detail below, the instant disclosuregenerally relates to systems and methods for providing relevant softwaredocumentation to users. In one example, a computer-implemented methodfor providing relevant software documentation to users may include (1)determining that a user is viewing a user interface of an application,(2) detecting that the user has requested assistance with interactingwith a specific portion of content displayed within the user interface,and then (3) assisting the user with interacting with the specificportion of content by (A) identifying, within a repository of softwaredocumentation that describes features of the application, informationrelevant to utilizing the specific portion of content and (B)dynamically integrating the relevant information into the userinterface.

As another example, a system for implementing the above-described methodmay include various modules stored in memory. The system may alsoinclude at least one physical processor that executes these modules. Forexample, the system may include (1) a determination module thatdetermines that a user is viewing a user interface of an application,(2) a detection module that detects that the user has requestedassistance with interacting with a specific portion of content displayedwithin the user interface, and (3) an assistance module that assists theuser with interacting with the specific portion of content by (A)identifying, within a repository of software documentation thatdescribes features of the application, information relevant to utilizingthe specific portion of content and (B) dynamically integrating therelevant information into the user interface.

As a further example, the above-described method may be encoded ascomputer-readable instructions on a non-transitory computer-readablemedium. For example, a computer-readable medium may include one or morecomputer-executable instructions that, when executed by at least oneprocessor of a computing device, cause the computing device to (1)determine that a user is viewing a user interface of an application, (2)detect that the user has requested assistance with interacting with aspecific portion of content displayed within the user interface, andthen (3) assist the user with interacting with the specific portion ofcontent by (A) identifying, within a repository of softwaredocumentation that describes features of the application, informationrelevant to utilizing the specific portion of content and (B)dynamically integrating the relevant information into the userinterface.

Features from any of the above-mentioned embodiments may be used incombination with one another in accordance with the general principlesdescribed herein. These and other embodiments, features, and advantageswill be more fully understood upon reading the following detaileddescription in conjunction with the accompanying drawings and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate a number of exemplary embodimentsand are a part of the specification. Together with the followingdescription, these drawings demonstrate and explain various principlesof the instant disclosure.

FIG. 1 is a block diagram of an exemplary system for providing relevantsoftware documentation to users.

FIG. 2 is a block diagram of an additional exemplary system forproviding relevant software documentation to users.

FIG. 3 is a flow diagram of an exemplary method for providing relevantsoftware documentation to users.

FIG. 4 is an illustration of an exemplary user interface of anapplication.

FIG. 5 is an illustration of an exemplary user interface of anapplication and an exemplary visual panel incorporated into the userinterface.

FIG. 6 is an illustration of an exemplary user interface of theapplication, an exemplary visual panel incorporated into the userinterface, and an exemplary visual pointer that overlays the visualpanel.

FIG. 7 is a block diagram of an exemplary computing system capable ofimplementing and/or being used in connection with one or more of theembodiments described and/or illustrated herein.

Throughout the drawings, identical reference characters and descriptionsindicate similar, but not necessarily identical, elements. While theexemplary embodiments described herein are susceptible to variousmodifications and alternative forms, specific embodiments have beenshown by way of example in the drawings and will be described in detailherein. However, the exemplary embodiments described herein are notintended to be limited to the particular forms disclosed. Rather, theinstant disclosure covers all modifications, equivalents, andalternatives falling within the scope of the appended claims.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

The present disclosure describes various systems and methods forproviding relevant software documentation to users. As will be explainedin greater detail below, embodiments of the instant disclosure mayprovide relevant portions of software documentation for an applicationto a user that is attempting to interact with content within theapplication. Specifically, the disclosed systems and methods maydetermine that a user requests assistance with a specific feature of anapplication and then dynamically display, to the user, information thatinstructs the user about how to utilize the specific feature. Thisinformation may be efficiently and seamlessly incorporated into a userinterface of the application. As such, the disclosed systems and methodsmay directly and conveniently provide the user with relevant informationcontained within software documentation, thereby potentially mitigatingand/or eliminating the need for the user to manually (and tediously)search through the documentation to identify the information.

Embodiments of the instant disclosure may also provide interactiveelements within user interfaces of an application that enable users tolocate important features of the application. For example, the disclosedsystems and methods may incorporate, into a user interface of anapplication, clickable links that cause visual pointers (e.g., arrows)to be displayed within the user interface. These pointers may direct auser's attention to particular elements of the application, therebyfurther improving the ability of a user to understand and interact withcontent of the application.

The following will provide, with reference to FIGS. 1 and 2, detaileddescriptions of exemplary systems for providing relevant softwaredocumentation to users. Detailed descriptions of correspondingcomputer-implemented methods will be provided in connection with FIG. 3.Detailed descriptions of exemplary user interfaces of applications willbe provided in connection with FIG. 4. In addition, detaileddescriptions of exemplary visual panels and visual pointers incorporatedinto user interfaces will be provided in connection with FIGS. 5 and 6,respectively. Finally, detailed descriptions of an exemplary computingsystem will be provided in connection with FIG. 7.

FIG. 1 is a block diagram of an exemplary system 100 for providingrelevant software documentation to users. As illustrated in this figure,exemplary system 100 may include one or more modules 102 for performingone or more tasks. As will be explained in greater detail below, modules102 may include a determination module 104, a detection module 106, andan assistance module 108. Although illustrated as separate elements, oneor more of modules 102 in FIG. 1 may represent portions of a singlemodule or application.

In certain embodiments, one or more of modules 102 in FIG. 1 mayrepresent one or more software applications or programs that, whenexecuted by a computing device, may cause the computing device toperform one or more tasks. For example, and as will be described ingreater detail below, one or more of modules 102 may represent modulesstored and configured to run on one or more computing devices, such asthe devices illustrated in FIG. 2 (e.g., computing device 202 and/orserver 206). One or more of modules 102 in FIG. 1 may also represent allor portions of one or more special-purpose computers configured toperform one or more tasks.

As illustrated in FIG. 1, system 100 may also include one or more memorydevices, such as memory 140. Memory 140 generally represents any type orform of volatile or non-volatile storage device or medium capable ofstoring data and/or computer-readable instructions. In one example,memory 140 may store, load, and/or maintain one or more of modules 102.Examples of memory 140 include, without limitation, Random Access Memory(RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives, (HDDs),Solid-State Drives (SSDs), optical disk drives, caches, variations orcombinations of one or more of the same, and/or any other suitablestorage memory.

As illustrated in FIG. 1, system 100 may also include one or morephysical processors, such as physical processor 130. Physical processor130 generally represents any type or form of hardware-implementedprocessing unit capable of interpreting and/or executingcomputer-readable instructions. In one example, physical processor 130may access and/or modify one or more of modules 102 stored in memory140. Additionally or alternatively, physical processor 130 may executeone or more of modules 102 to facilitate providing relevant softwaredocumentation to users. Examples of physical processor 130 include,without limitation, microprocessors, microcontrollers, CentralProcessing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) thatimplement softcore processors, Application-Specific Integrated Circuits(ASICs), portions of one or more of the same, variations or combinationsof one or more of the same, and/or any other suitable physicalprocessor.

As illustrated in FIG. 1, exemplary system 100 may also include arepository of software documentation 120. Repository of softwaredocumentation 120 generally represents any database, collection, and/orset of files that store software documentation associated with one ormore software applications. Repository of software documentation 120 maybe stored within the devices illustrated in FIG. 2 (e.g., computingdevice 202 and/or server 206) or any other suitable storage device.

The term “software documentation,” as used herein, generally refers toany information and/or instructions that describe features of anapplication and/or indicate how to utilize features of an application.For example, software documentation may include and/or represent atechnical manual that explains the functionality of various elements ofan application. In other words, software documentation may containinformation designed to enable a user to efficiently and effectivelyinteract with an application.

Traditional software documentation may generally be compiled and/orstored in a document and/or location that is separate from theapplication it describes. For example, a conventional system formanaging software documentation may store documentation for anapplication within a file, document, and/or website that is accessedremotely from the application. A user that wishes to obtain knowledgeabout a particular feature of an application may access theapplication's documentation (e.g., by opening the documentation in aseparate window than the window that displays the application). The usermay then search through the documentation to identify informationrelevant to the particular feature. While such traditional documentationsystems may contain helpful and/or valuable information about variousfeatures of an application, identifying such information may bedifficult and/or tedious for many users.

In some examples, repository of software documentation 120 may storetraditional software documentation (e.g., documentation that wascompiled by a developer of an application and/or intended to be accesseddirectly by users of the application). Additionally or alternatively,repository of software documentation 120 may store softwaredocumentation that was generated specifically to be utilized by thedisclosed systems.

In the example of FIG. 1, repository of software documentation 120 mayinclude relevant information 122. Relevant information 122 generallyrepresents any portion of information within repository of softwaredocumentation 120 that describes and/or is associated with a particularelement or feature of an application that is of particular interest to auser. As will be explained in greater detail below, the disclosedsystems may dynamically incorporate relevant information 122 into a userinterface of an application such that the user is presented withrelevant information 122 without having to search through a document ordatabase that stores documentation for the application.

Exemplary system 100 in FIG. 1 may be implemented in a variety of ways.For example, all or a portion of exemplary system 100 may representportions of exemplary system 200 in FIG. 2. As shown in FIG. 2, system200 may include a computing device 202 in communication with a server206 via a network 204. In one example, all or a portion of thefunctionality of modules 102 may be performed by computing device 202,server 206, and/or any other suitable computing system. As will bedescribed in greater detail below, one or more of modules 102 from FIG.1 may, when executed by at least one processor of computing device 202and/or server 206, enable computing device 202 and/or server 206 toprovide relevant software documentation to a user of computing device202.

Computing device 202 generally represents any type or form of computingdevice capable of reading computer-executable instructions. In oneexample, computing device 202 may represent a personal computing devicethat is managed by a user and/or an enterprise. Additional examples ofcomputing device 202 include, without limitation, laptops, tablets,desktops, servers, switches, hubs, modems, bridges, repeaters, gateways,multiplexers, network adapters, network interfaces, network racks,chasses, storage devices, client devices, cellular phones, PersonalDigital Assistants (PDAs), multimedia players, embedded systems,wearable devices, gaming consoles, portions of one or more of the same,combinations or variations of one or more of the same, and/or any othersuitable computing device. Although FIG. 2 illustrates computing device202 as being external to network 204, computing device 202 mayalternatively represent and/or be included in network 204.

Server 206 generally represents any type or form of computing devicecapable of storing, maintaining, and/or searching repositories ofsoftware documentation. Additional examples of server 206 include,without limitation, security servers, application servers, storageservers, and/or database servers configured to run certain softwareapplications and/or provide various security, storage, and/or databaseservices. Although illustrated as a single entity in FIG. 2, server 206may include and/or represent a plurality of servers that work and/oroperate in conjunction with one another.

Network 204 generally represents any medium or architecture capable offacilitating communication or data transfer. In one example, network 204may facilitate communication between computing device 202 and server206. In this example, network 204 may facilitate communication or datatransfer using wireless and/or wired connections. Examples of network204 include, without limitation, an intranet, a Wide Area Network (WAN),a Local Area Network (LAN), a Personal Area Network (PAN), the Internet,Power Line Communications (PLC), a cellular network (e.g., a GlobalSystem for Mobile Communications (GSM) network), portions of one or moreof the same, variations or combinations of one or more of the same,and/or any other suitable network.

Application 208 generally represents any type or form of software-basedapplication that may be executed and/or operated by a computing device(such as computing device 202). Examples of application 208 include,without limitation, desktop applications, mobile applications,cloud-based applications, gaming applications, word-processingapplications, business applications, communications applications, mediaapplications, educational applications, variations or combinations ofone or more of the same, and/or any other suitable application.

In some embodiments, application 208 may contain and/or provide avariety of services and/or interactive features. These features andservices may be presented to a user via one or more user interfaces,such as a user interface 210. The term “user interface,” as used herein,generally refers to any portal and/or window that displays content to auser and/or that is configured to accept and handle user input. In theexample of FIG. 2, user interface 210 may contain one or more portionsof content, such as a portion of content 212. Portion of content 212generally represents any particular element within user interface 210with which a user may interact. In other words, portion of content 212may be distinct from other portions of content within user interface210.

FIG. 3 is a flow diagram of an example computer-implemented method 300for providing relevant software documentation to users. The steps shownin FIG. 3 may be performed by any suitable computer-executable codeand/or computing system, including system 100 in FIG. 1, system 300 inFIG. 3 and/or variations or combinations of one or more of the same. Inone example, each of the steps shown in FIG. 3 may represent analgorithm whose structure includes and/or is represented by multiplesub-steps, examples of which will be provided in greater detail below.

As illustrated in FIG. 3, at step 310 one or more of the systemsdescribed herein may determine that a user is viewing a user interfaceof an application. For example, determination module 104 may, as part ofcomputing device 202 in FIG. 2, determine that a user is viewing userinterface 210 of application 208. In this example, application 208 mayrepresent an application that is installed on and/or configured to runon computing device 202. In addition, all or a portion of determinationmodule 104 may be contained and/or operated by application 208.

The systems described herein may perform step 310 in a variety of waysand/or contexts. In some examples, determination module 104 may monitorapplication 208 to determine when the user is accessing content withinapplication 208. For example, determination module 104 may detect eachtime that the user opens or launches application 208. In someembodiments, after detecting that the user has opened application 208,determination module 104 may identify a specific user interface withinapplication 208 that the user is currently viewing. For example,determination module 104 may determine which features or elements ofapplication 208 are currently displayed to the user on the screen ofcomputing device 202. In some examples, determination module 104 mayperiodically or continuously track the elements of application 208 thatare displayed to the user as the user navigates through application 208.

As illustrated in FIG. 3, at step 320 one or more of the systemsdescribed herein may detect that the user has requested assistance withinteracting with a specific portion of content displayed within the userinterface. For example, detection module 106 may, as part of computingdevice 202 and/or application 208 in FIG. 2, detect that the user hasrequested assistance with interacting with portion of content 212 thatis displayed within user interface 210.

The systems described herein may perform step 320 in a variety of waysand/or contexts. In some examples, detection module 106 may monitorapplication 208 to detect when the user has performed a predeterminedaction indicating that the user is requesting information that explainshow to utilize portion of content 212. This action may contain and/orrepresent a variety of types of user inputs. Additionally oralternatively, this action may identify portion of content 212 as beingof particular interest to the user. In other words, this action may beused to determine that portion of content 212 is of particular interestto the user.

In one example, the action may involve the user left-clicking and/orright-clicking on portion of content 212. Additionally or alternatively,the action may involve the user hovering or holding a mouse cursor overportion of content 212 for a predetermined amount of time (e.g., 2seconds). In the event that computing device 202 is equipped with atouchscreen, the action may involve the user physically touching thegraphical depiction of portion of content 212 as displayed on thetouchscreen. In another example, the action may involve the userpressing a specific combination of keys on a keyboard connected tocomputing device 202.

FIG. 4 illustrates an example of user interface 210. In this example,user interface 210 may include and/or display a variety of interactiveportions of content, including several “widgets” (e.g., widgets 1-4), a“dashboard,” and a “workspace.” The user may interact with theseportions of content at least in part via a cursor 402. In the example ofFIG. 4, each of these portions of content may be configured such thatright-clicking on the portion of content indicates, to detection module106, that the user is requesting assistance with interacting with theportion of content. As such, detection module 106 may monitor (e.g.,continuously) each portion of content to detect when the userright-clicks on a portion of content. For example, detection module 106may intercept and analyze all or a portion of the input entered by theuser into user interface 210 via a mouse connected to computing device202.

In the example of FIG. 4, cursor 402 is positioned over a button labeled“My Dashboard.” In this example, detection module 106 may detect thatthe user has right-clicked on this button. As such, detection module 106may determine that the user has requested assistance with interactingwith the “dashboard” feature of user interface 210.

Returning to FIG. 3, at step 330 one or more of the systems describedherein may assist the user with interacting with the specific portion ofcontent by (1) identifying, within a repository of softwaredocumentation that describes features of the application, informationrelevant to utilizing the specific portion of content and (2)dynamically integrating the relevant information into the userinterface. For example, assistance module 108 may, as part of computingdevice 202 and/or application 208 in FIG. 2, assist the user withinteracting with portion of content 212 by identifying relevantinformation 122 within repository of software documentation 120 and thendynamically integrating relevant information 122 into user interface 210for presentation in connection with portion of content 212.

The systems described herein may perform step 330 in a variety of waysand/or contexts. In some examples, assistance module 108 may configure avisual panel to display relevant information 122 within user interface210. The term “visual panel,” as used herein, generally refers to anyuser interface and/or portion of a user interface that displaysinformation relevant to utilizing content provided by an application. Inone example, the visual panel may include and/or represent a graphicaluser interface and/or display window.

In some embodiments, assistance module 108 may display a visual panelthat contains relevant information 122 within the same window and/orscreen that displays application 208. For example, assistance module 108may incorporate the visual panel directly into user interface 210. As anexample, assistance module 108 may display relevant information 122within user interface 210 such that relevant information 122 is adjacentto and/or inline with portion of content 212. In other examples,assistance module 108 may overlay a visual panel on top of userinterface 210. For example, the visual panel may represent a pop-upwindow or similar type of user interface that covers at least a portionof user interface 210.

In some examples, assistance module 108 may position a visual panelwithin and/or over user interface 210 such that the visual panel doesnot interfere with (e.g., cover up) portion of content 212 (oradditional portions of content displayed within user interface 210). Forexample, assistance module 108 may display relevant information 122within an area of user interface 210 that does not include importantand/or relevant portions of content. In one embodiment, in response todetecting that the user requests assistance with portion of content 212,assistance module 108 may dynamically select the position and/orplacement of a visual panel containing relevant information 122 suchthat the visual panel does not disrupt the user's current view of userinterface 210. In other embodiments, assistance module 108 may display avisual panel at a predetermined location within user interface 210. Ingeneral, assistance module 108 may incorporate a visual panel into userinterface 210 in any manner and in any location such that relevantinformation 122 is conveniently displayed nearby portion of content 212.

Assistance module 108 may configure a visual panel to display relevantinformation 122 in a variety of ways. In some examples, assistancemodule 108 may populate a visual panel at least in part with informationthat is stored within repository of software documentation 120. Forexample, assistance module 108 (or an administrator of application 208)may search and/or analyze repository of software documentation 120 toidentify relevant information 122. Assistance module 108 may then insertthis information into a visual panel that is associated with and/orconnected to portion of content 212. In general, assistance module 108may populate a visual panel with any type or form of information thatexplains the purpose of portion of content 212, describescharacteristics of portion of content 212, indicates how portion ofcontent 212 is designed to be used, and/or is otherwisecontextually-relevant to portion of content 212.

In one embodiment, assistance module 108 may pre-configure the visualpanel with relevant information 122. For example, assistance module 108may identify relevant information 122 and generate a visual panel thatcontains relevant information 122 prior to the user requestingassistance with interacting with portion of content 212. In oneembodiment, assistance module 108 may pre-configure the visual panel (aswell as additional visual panels associated with additional portions ofcontent within application 208) during the process of developingapplication 208. In this way, assistance module 108 may automaticallyand/or immediately present the visual panel to the user in response tothe user requesting assistance with interacting with portion of content212.

In other embodiments, assistance module 108 may configure the visualpanel with relevant information 122 in response to detecting that theuser has requested assistance with interacting with portion of content212. For example, in response to the request, assistance module 108 mayidentify relevant information 122 within repository of softwaredocumentation 120 and then dynamically populate a visual panel withrelevant information 122. In this way, assistance module 108 maycustomize and/or optimize the visual panel based on the user's currentrequest.

FIG. 5 illustrates an exemplary visual panel incorporated into userinterface 210. Specifically, FIG. 5 shows a visual panel 504 thatassistance module 108 may incorporate into the user interfaceillustrated in FIG. 4 in response to the user's request for assistancewith interacting with the “dashboard” feature of user interface 210. Inthis example, visual panel 504 may represent a user interface labeled“Help Center” that displays information instructing the user how toutilize the “dashboard” feature. As shown in FIG. 5, visual panel 504may be overlaid on top of user interface 210 such that the “dashboard”feature remains visible and/or accessible to the user.

In some embodiments, assistance module 108 may configure a visual panelto dynamically identify, to the user, one or more features within userinterface 210 that are relevant to portion of content 212. For example,assistance module 108 may include, within the visual panel, a clickablelink associated with a specific portion of content within user interface210. In response to detecting that the user has clicked on the link (orotherwise selected and/or followed the link), assistance module 108 mayincorporate a visual pointer into user interface 210 that identifiesand/or points to the specific portion of content within user interface210. In one embodiment, the visual pointer may represent a graphicalarrow or similar symbol.

Assistance module 108 may select and/or identify features within userinterface 210 to via visual pointers in a variety of ways. In someexamples, assistance module 108 may select features that areparticularly relevant and/or important to portion of content 210 orapplication 208. For example, assistance module 108 may identifyimportant features of application 208 by identifying particularlyprominent topics and/or terms within repository of softwaredocumentation 120. Additionally or alternatively, assistance module 108may identify important features of application 208 based on input from auser or administrator of application 208.

FIG. 6 illustrates an exemplary visual pointer 604. In this example,assistance module 108 may display visual pointer 604 within userinterface 210 in response to detecting that the user has clicked on aclickable link 602 within visual panel 504. As shown in FIG. 6,clickable link 602 may correspond to the word “workspace.” Accordingly,assistance module 108 may position visual pointer 604 within userinterface 210 such that visual pointer 604 identifies and/or is directedtowards the “workspace” feature within user interface 210. In someexamples, visual panel 504 may contain one or more additional clickablelinks that may be used to identify additional portions of content withinapplication 208. Furthermore, while FIG. 6 illustrates clickable link602 as an underlined word, the disclosed systems may indicate thepresence of a clickable link to a user in any other suitable manner,such as highlighting or labelling the link (as opposed to underlining).

In some embodiments, assistance module 108 may determine that the userno longer requests assistance with interacting with portion of content212. For example, assistance module 108 may detect input provided by theuser that indicates the user has stopped utilizing relevant information122. As an example, assistance module 108 may detect that the user hasbegun interacting with a different portion of content within userinterface 210. Additionally or alternatively, assistance module 108 maydetermine that relevant information 122 has been displayed within userinterface 210 for a predetermined amount of time (e.g., 20 seconds). Inresponse to determining or deducing that the user no longer requestsassistance with portion of content 212, assistance module 108 may removethe visual panel that displays relevant information 122 from userinterface 208 (as well as any associated visual pointers).

FIG. 7 is a block diagram of an exemplary computing system 700 capableof implementing and/or being used in connection with one or more of theembodiments described and/or illustrated herein. In some embodiments,all or a portion of computing system 700 may perform and/or be a meansfor performing, either alone or in combination with other elements, oneor more of the steps described in connection with FIG. 3. All or aportion of computing system 700 may also perform and/or be a means forperforming and/or implementing any other steps, methods, or processesdescribed and/or illustrated herein. In one example, computing system700 may include and/or store all or a portion of modules 102 from FIG.1.

Computing system 700 broadly represents any type or form of electricalload, including a single or multi-processor computing device or systemcapable of executing computer-readable instructions. Examples ofcomputing system 700 include, without limitation, workstations, laptops,client-side terminals, servers, distributed computing systems, mobiledevices, network switches, network routers (e.g., backbone routers, edgerouters, core routers, mobile service routers, broadband routers, etc.),network appliances (e.g., network security appliances, network controlappliances, network timing appliances, SSL VPN (Secure Sockets LayerVirtual Private Network) appliances, etc.), network controllers,gateways (e.g., service gateways, mobile packet gateways, multi-accessgateways, security gateways, etc.), and/or any other type or form ofcomputing system or device.

Computing system 700 may be programmed, configured, and/or otherwisedesigned to comply with one or more networking protocols. According tocertain embodiments, computing system 700 may be designed to work withprotocols of one or more layers of the Open Systems Interconnection(OSI) reference model, such as a physical layer protocol, a link layerprotocol, a network layer protocol, a transport layer protocol, asession layer protocol, a presentation layer protocol, and/or anapplication layer protocol. For example, computing system 700 mayinclude a network device configured according to a Universal Serial Bus(USB) protocol, an Institute of Electrical and Electronics Engineers(IEEE) 1394 protocol, an Ethernet protocol, a T1 protocol, a SynchronousOptical Networking (SONET) protocol, a Synchronous Digital Hierarchy(SDH) protocol, an Integrated Services Digital Network (ISDN) protocol,an Asynchronous Transfer Mode (ATM) protocol, a Point-to-Point Protocol(PPP), a Point-to-Point Protocol over Ethernet (PPPoE), a Point-to-PointProtocol over ATM (PPPoA), a Bluetooth protocol, an IEEE 802.XXprotocol, a frame relay protocol, a token ring protocol, a spanning treeprotocol, and/or any other suitable protocol.

Computing system 700 may include various network and/or computingcomponents. For example, computing system 700 may include at least oneprocessor 714 and a system memory 716. Processor 714 generallyrepresents any type or form of processing unit capable of processingdata or interpreting and executing instructions. For example, processor714 may represent an application-specific integrated circuit (ASIC), asystem on a chip (e.g., a network processor), a hardware accelerator, ageneral purpose processor, and/or any other suitable processing element.

Processor 714 may process data according to one or more of thenetworking protocols discussed above. For example, processor 714 mayexecute or implement a portion of a protocol stack, may process packets,may perform memory operations (e.g., queuing packets for laterprocessing), may execute end-user applications, and/or may perform anyother processing tasks.

System memory 716 generally represents any type or form of volatile ornon-volatile storage device or medium capable of storing data and/orother computer-readable instructions. Examples of system memory 716include, without limitation, Random Access Memory (RAM), Read OnlyMemory (ROM), flash memory, or any other suitable memory device.Although not required, in certain embodiments computing system 700 mayinclude both a volatile memory unit (such as, for example, system memory716) and a non-volatile storage device (such as, for example, primarystorage device 732, as described in detail below). System memory 716 maybe implemented as shared memory and/or distributed memory in a networkdevice. Furthermore, system memory 716 may store packets and/or otherinformation used in networking operations.

In certain embodiments, exemplary computing system 700 may also includeone or more components or elements in addition to processor 714 andsystem memory 716. For example, as illustrated in FIG. 7, computingsystem 700 may include a memory controller 718, an Input/Output (I/O)controller 720, and a communication interface 722, each of which may beinterconnected via communication infrastructure 712. Communicationinfrastructure 712 generally represents any type or form ofinfrastructure capable of facilitating communication between one or morecomponents of a computing device. Examples of communicationinfrastructure 712 include, without limitation, a communication bus(such as a Serial ATA (SATA), an Industry Standard Architecture (ISA), aPeripheral Component Interconnect (PCI), a PCI Express (PCIe), and/orany other suitable bus), and a network.

Memory controller 718 generally represents any type or form of devicecapable of handling memory or data or controlling communication betweenone or more components of computing system 700. For example, in certainembodiments memory controller 718 may control communication betweenprocessor 714, system memory 716, and I/O controller 720 viacommunication infrastructure 712. In some embodiments, memory controller718 may include a Direct Memory Access (DMA) unit that may transfer data(e.g., packets) to or from a link adapter.

I/O controller 720 generally represents any type or form of device ormodule capable of coordinating and/or controlling the input and outputfunctions of a computing device. For example, in certain embodiments I/Ocontroller 720 may control or facilitate transfer of data between one ormore elements of computing system 700, such as processor 714, systemmemory 716, communication interface 722, and storage interface 730.

Communication interface 722 broadly represents any type or form ofcommunication device or adapter capable of facilitating communicationbetween exemplary computing system 700 and one or more additionaldevices. For example, in certain embodiments communication interface 722may facilitate communication between computing system 700 and a privateor public network including additional computing systems. Examples ofcommunication interface 722 include, without limitation, a link adapter,a wired network interface (such as a network interface card), a wirelessnetwork interface (such as a wireless network interface card), and anyother suitable interface. In at least one embodiment, communicationinterface 722 may provide a direct connection to a remote server via adirect link to a network, such as the Internet. Communication interface722 may also indirectly provide such a connection through, for example,a local area network (such as an Ethernet network), a personal areanetwork, a wide area network, a private network (e.g., a virtual privatenetwork), a telephone or cable network, a cellular telephone connection,a satellite data connection, or any other suitable connection.

In certain embodiments, communication interface 722 may also represent ahost adapter configured to facilitate communication between computingsystem 700 and one or more additional network or storage devices via anexternal bus or communications channel. Examples of host adaptersinclude, without limitation, Small Computer System Interface (SCSI) hostadapters, Universal Serial Bus (USB) host adapters, IEEE 1394 hostadapters, Advanced Technology Attachment (ATA), Parallel ATA (PATA),Serial ATA (SATA), and External SATA (eSATA) host adapters, FibreChannel interface adapters, Ethernet adapters, or the like.Communication interface 722 may also enable computing system 700 toengage in distributed or remote computing. For example, communicationinterface 722 may receive instructions from a remote device or sendinstructions to a remote device for execution.

As illustrated in FIG. 7, exemplary computing system 700 may alsoinclude a primary storage device 732 and/or a backup storage device 734coupled to communication infrastructure 712 via a storage interface 730.Storage devices 732 and 734 generally represent any type or form ofstorage device or medium capable of storing data and/or othercomputer-readable instructions. For example, storage devices 732 and 734may represent a magnetic disk drive (e.g., a so-called hard drive), asolid state drive, a floppy disk drive, a magnetic tape drive, anoptical disk drive, a flash drive, or the like. Storage interface 730generally represents any type or form of interface or device fortransferring data between storage devices 732 and 734 and othercomponents of computing system 700.

In certain embodiments, storage devices 732 and 734 may be configured toread from and/or write to a removable storage unit configured to storecomputer software, data, or other computer-readable information.Examples of suitable removable storage units include, withoutlimitation, a floppy disk, a magnetic tape, an optical disk, a flashmemory device, or the like. Storage devices 732 and 734 may also includeother similar structures or devices for allowing computer software,data, or other computer-readable instructions to be loaded intocomputing system 700. For example, storage devices 732 and 734 may beconfigured to read and write software, data, or other computer-readableinformation. Storage devices 732 and 734 may be a part of computingsystem 700 or may be separate devices accessed through other interfacesystems.

Many other devices or subsystems may be connected to computing system700. Conversely, all of the components and devices illustrated in FIG. 7need not be present to practice the embodiments described and/orillustrated herein. The devices and subsystems referenced above may alsobe interconnected in different ways from those shown in FIG. 7.Computing system 700 may also employ any number of software, firmware,and/or hardware configurations. For example, one or more of theexemplary embodiments disclosed herein may be encoded as a computerprogram (also referred to as computer software, software applications,computer-readable instructions, or computer control logic) on acomputer-readable medium. The term “computer-readable medium” generallyrefers to any form of device, carrier, or medium capable of storing orcarrying computer-readable instructions. Examples of computer-readablemedia include, without limitation, transmission-type media, such ascarrier waves, and non-transitory-type media, such as magnetic-storagemedia (e.g., hard disk drives and floppy disks), optical-storage media(e.g., Compact Disks (CDs) and Digital Video Disks (DVDs)),electronic-storage media (e.g., solid-state drives and flash media), andother distribution systems.

While the foregoing disclosure sets forth various embodiments usingspecific block diagrams, flowcharts, and examples, each block diagramcomponent, flowchart step, operation, and/or component described and/orillustrated herein may be implemented, individually and/or collectively,using a wide range of hardware, software, or firmware (or anycombination thereof) configurations. In addition, any disclosure ofcomponents contained within other components should be consideredexemplary in nature since many other architectures can be implemented toachieve the same functionality.

In some examples, all or a portion of system 100 in FIG. 1 may representportions of a cloud-computing or network-based environment.Cloud-computing and network-based environments may provide variousservices and applications via the Internet. These cloud-computing andnetwork-based services (e.g., software as a service, platform as aservice, infrastructure as a service, etc.) may be accessible through aweb browser or other remote interface. Various functions describedherein may also provide network switching capabilities, gateway accesscapabilities, network security functions, content caching and deliveryservices for a network, network control services, and/or and othernetworking functionality.

In addition, one or more of the modules described herein may transformAdditionally or alternatively, one or more of the modules recited hereinmay transform a processor, volatile memory, non-volatile memory, and/orany other portion of a physical computing device from one form toanother by executing on the computing device, storing data on thecomputing device, and/or otherwise interacting with the computingdevice.

The process parameters and sequence of the steps described and/orillustrated herein are given by way of example only and can be varied asdesired. For example, while the steps illustrated and/or describedherein may be shown or discussed in a particular order, these steps donot necessarily need to be performed in the order illustrated ordiscussed. The various exemplary methods described and/or illustratedherein may also omit one or more of the steps described or illustratedherein or include additional steps in addition to those disclosed.

The preceding description has been provided to enable others skilled inthe art to best utilize various aspects of the exemplary embodimentsdisclosed herein. This exemplary description is not intended to beexhaustive or to be limited to any precise form disclosed. Manymodifications and variations are possible without departing from thespirit and scope of the instant disclosure. The embodiments disclosedherein should be considered in all respects illustrative and notrestrictive. Reference should be made to the appended claims and theirequivalents in determining the scope of the instant disclosure.

Unless otherwise noted, the terms “connected to” and “coupled to” (andtheir derivatives), as used in the specification and claims, are to beconstrued as permitting both direct and indirect (i.e., via otherelements or components) connection. In addition, the terms “a” or “an,”as used in the specification and claims, are to be construed as meaning“at least one of.” Finally, for ease of use, the terms “including” and“having” (and their derivatives), as used in the specification andclaims, are interchangeable with and have the same meaning as the word“comprising.”

What is claimed is:
 1. A method comprising: determining that a user is viewing a user interface of an application; detecting that the user has requested assistance with interacting with a specific portion of content displayed within the user interface; and assisting the user with interacting with the specific portion of content by: identifying, within a repository of software documentation that describes features of the application, information relevant to utilizing the specific portion of content; incorporating the relevant information into a visual panel to be displayed within the user interface, wherein incorporating the relevant information into the visual panel comprises incorporating a clickable link that: corresponds to a word that is included in the visual panel and represents a feature within the user interface; and when clicked by the user, causes a graphical arrow to be displayed in connection with the feature within the user interface of the application such that the specific portion of content is identified by the graphical arrow to the user; dynamically selecting a position within the user interface at which to display the visual panel such that the specific portion of content remains visible to the user; and displaying the visual panel at the selected position within the user interface.
 2. The method of claim 1, wherein detecting that the user has requested assistance with interacting with the specific portion of content comprises detecting that the user has clicked on the specific portion of content.
 3. The method of claim 1, wherein displaying the visual panel at the selected position within the user interface comprises displaying the visual panel within the same window that displays the user interface.
 4. The method of claim 3, wherein the visual panel comprises an additional user interface that is overlaid on top of the user interface of the application.
 5. The method of claim 3, wherein the visual panel is incorporated directly into the user interface of the application.
 6. The method of claim 3, wherein: identifying the relevant information within the repository of software documentation comprises: identifying the relevant information prior to detecting that the user has requested assistance with interacting with the specific portion of content; and pre-configuring the visual panel to display the relevant information; and dynamically selecting the position within the user interface at which to display the visual panel comprises selecting the position in response to detecting that the user has requested assistance with interacting with the specific portion of content.
 7. The method of claim 3, wherein identifying the relevant information within the repository of software documentation and incorporating the relevant information into the visual panel are both performed in response to detecting that the user has requested assistance with interacting with the specific portion of content.
 8. The method of claim 1, further comprising: determining that the user no longer requests assistance with interacting with the specific portion of content; and in response to determining that the user no longer requests assistance, removing the visual panel from the user interface.
 9. A system comprising: a determination module, stored in memory, that determines that a user is viewing a user interface of an application; a detection module, stored in memory, that detects that the user has requested assistance with interacting with a specific portion of content displayed within the user interface; an assistance module, stored in memory, that assists the user with interacting with the specific portion of content by: identifying, within a repository of software documentation that describes features of the application, information relevant to utilizing the specific portion of content; incorporating the relevant information into a visual panel to be displayed within the user interface, wherein incorporating the relevant information into the visual panel comprises incorporating a clickable link that: corresponds to a word that is included in the visual panel and represents a feature within the user interface; and when clicked by the user, causes a graphical arrow to be displayed in connection with the feature within the user interface of the application such that the specific portion of content is identified by the graphical arrow to the user; dynamically selecting a position within the user interface at which to display the visual panel such that the specific portion of content remains visible to the user; and displaying the visual panel at the selected position within the user interface; and at least one physical processor configured to execute the determination module, the detection module, and the assistance module.
 10. The system of claim 9, wherein the detection module detects that the user has clicked on the specific portion of content.
 11. The system of claim 9, wherein the assistance module displays the visual panel within the same window that displays the user interface.
 12. The system of claim 11, wherein the assistance module overlays the visual panel on top of the user interface of the application.
 13. The system of claim 11, wherein the assistance module incorporates the visual panel directly into the user interface of the application.
 14. The system of claim 11, wherein the assistance module: identifies the relevant information within the repository of software documentation prior to detecting that the user has requested assistance with interacting with the specific portion of content; pre-configures the visual panel to display the relevant information; and dynamically selects the position within the user interface at which to display the visual panel in response to the detection module detecting that the user has requested assistance with interacting with the specific portion of content.
 15. The system of claim 11, wherein the assistance module identifies the relevant information within the repository of software documentation and incorporates the relevant information into the visual panel in response to the detection module detecting that the user has requested assistance with interacting with the specific portion of content.
 16. A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to: determine that a user is viewing a user interface of an application; detect that the user has requested assistance with interacting with a specific portion of content displayed within the user interface; and assist the user with interacting with the specific portion of content by: identifying, within a repository of software documentation that describes features of the application, information relevant to utilizing the specific portion of content; incorporating the relevant information into a visual panel to be displayed within the user interface, wherein incorporating the relevant information into the visual panel comprises incorporating a clickable link that: corresponds to a word that is included in the visual panel and represents a feature within the user interface; and when clicked by the user, causes a graphical arrow to be displayed in connection with the feature within the user interface of the application such that the specific portion of content is identified by the graphical arrow to the user; dynamically selecting a position within the user interface at which to display the visual panel such that the specific portion of content remains visible to the user; and displaying the visual panel at the selected position within the user interface. 